The present invention concerns image display. It has particular application to color correction employed in digital systems for specifying the manner in which a source image is to be rendered.
In most cases, a digitally stored color image is stored in terms of nominal values that a device displaying the image should attempt to approximate as closely as possible. The image may be stored as pixel values or rasterized into a pixel-value organization in the course of displaying it. In either case, the values of the pixels are typically given as three-component vectors. A common format is three eight-bit or twelve-bit words, each of which represents the red, green, or blue component of the image.
Displaying the image typically involves employing corresponding color agents. In a cathode-ray-tube or similar positive-color display, the components respectively correspond to, say, the red, green, and blue screen phosphors that add the corresponding colors to the black background when they are excited. In negative-color systems, such as typical printers, those components correspond to the complementary cyan, magenta, and yellow components, which subtract red, green, and blue, respectively, from the white background.
However, the correspondence between the magnitude of the nominal color-component value and the amount of the corresponding color agent to be employed to yield the most faithful rendition on a given display device is not exact. Whereas equal red, green, and blue component values nominally specify a given intensity of white, a tint would instead result from most displays' equal application of the corresponding coloring agents, e.g., from equal driving of a color CRT's three electron guns or equal duty cycles of an ink jet printer's ink jets. To overcome these effects, the display process usually includes color "correction" to convert nominal values to values that will yield better fidelity in the particular type of display device being used.
What we will refer to here loosely as "color correction" may have additional intended effects, too. For instance, the correction may be performed not simply to compensate for the non-ideal relationships among the coloring agents but also to accommodate various display-device or -medium limitations. In ink-jet printing, for instance, the coloring agent, ink, is dispensed as individual ink dots, and the intensity variation is achieved not by changing the individual dots but by changing the average number of dots per unit area. Because of the dots' shapes and the other factors, this process introduces certain nonlinearities, for which it is desirable to compensate by a "correction" in the requested color. Also, different papers or other print media may be susceptible to "bleeding" to a greater or lesser extent, and the color "correction" actually reduces color fidelity by limiting color darkness but thereby preventing excessive bleeding. We will refer to all of these as "color correction," their common characteristic being the need to convert from a nominal color to a requested color that will tend to achieve a particular printer- or medium-specific requirement.
The relationship between the nominal color and the levels at which the corresponding color agents should be applied are in most cases quite nonlinear, and many digital systems use look-up tables to perform the conversion. But it is not always considered acceptable to provide a look-up table that will give the optimum conversion exhaustively. The magnitude of the problem can be appreciated by considering a typical system in which the components of the nominal color values are expressed with eight-bit resolution. Eight-bit resolution means that there are 256 possible values for each color component, and since there are three components, eight-bit resolution results in 256.sup.3 possible colors, which is over 16 million. So the color-correction table could require 16 megabytes of memory.
In many applications, this is not acceptable, so an often-employed alternative is to provide a much-smaller look-up table that in effect is a sparse sampling of the color space. When the correction for a given color is required, a corrected value is found by interpolating among the table entries closest to the uncorrected color. If the sparseness of the color-space sampling is not excessive, the result can be quite good. But the interpolation process is slow, so this approach can impose a significant speed penalty,